package com.g2room.search.life;

import java.util.List;

import org.elasticsearch.action.bulk.BulkRequestBuilder;
import org.elasticsearch.action.bulk.BulkResponse;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.index.IndexRequestBuilder;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.client.Client;

public class Index {
	private EsClient esClient;
	public Index(){
		esClient = new EsClient("127.0.0.1", "9300", "023sh", "life");
	}
	public Index(String index){ 
		esClient = new EsClient(index);
	}
	

	public static void main(String[] args) {
//		
//		String type = "sysLink";
////		String json = "{\"address\":\"北京市海淀区颐和园路5号\",\"autonomyrs\":\"1\",\"badge\":\"http://img.myuall.com/univ/badge/p00189371.jpeg\",\"belong\":\"教育部\",\"category\":\"综合类大学\",\"createdate\":\"1898 年\",\"createtime\":\"2016-06-08 13:04:01\",\"description\":\"<p>北京大学创办于1898年，初名京师大学堂，是中国第一所国立综合性大学，也是当时中国最高教育行政机关。辛亥革命后，于1912年改为现名。</p><p>作为新文化运动的中心和“五四”运动的策源地，作为中国最早传播马克思主义和民主科学思想的发祥地，作为中国共产党最早的活动基地，北京大学为民族的振兴和解放、国家的建设和发展、社会的文明和进步做出了不可替代的贡献，在中国走向现代化的进程中起到了重要的先锋作用。爱国、进步、民主、科学的传统精神和勤奋、严谨、求实、创新的学风在这里生生不息、代代相传。</p><p>1917年，著名教育家蔡元培出任北京大学校长，他“循思想自由原则，取兼容并包主义”，对北京大学进行了卓有成效的改革，促进了思想解放和学术繁荣。陈独秀、李大钊、毛泽东以及鲁迅、胡适等一批杰出人才都曾在北京大学任职或任教。</p><p>1937年卢沟桥事变后，北京大学与清华大学、南开大学南迁长沙，共同组成长沙临时大学。不久，临时大学又迁到昆明，改称国立西南联合大学。抗日战争胜利后，北京大学于1946年10月在北平复学。</p><p>中华人民共和国成立后，全国高校于1952年进行院系调整，北京大学成为一所以文理基础教学和研究为主的综合性大学，为国家培养了大批人才。据不完全统计，北京大学的校友和教师有400多位两院院士，中国人文社科界有影响的人士相当多也出自北京大学。</p><p>改革开放以来，北京大学进入了一个前所未有的大发展、大建设的新时期，并成为国家“211工程”重点建设的两所大学之一。</p><p>1998年5月4日，北京大学百年校庆之际，国家主席江泽民在庆祝北京大学建校一百周年大会上发表讲话，发出了“为了实现现代化，我国要有若干所具有世界先进水平的一流大学”的号召。在国家的支持下，北京大学适时启动“创建世界一流大学计划”，从此，北京大学的历史翻开了新的一页。</p><p>2000年4月3日，北京大学与原北京医科大学合并，组建了新的北京大学。原北京医科大学的前身是国立北京医学专门学校，创建于1912年10月26日。20世纪三、四十年代，学校一度名为北平大学医学院，并于1946年7月并入北京大学。1952年在全国高校院系调整中，北京大学医学院脱离北京大学，独立为北京医学院。1985年更名为北京医科大学，1996年成为国家首批“211工程”重点支持的医科大学。两校合并进一步拓宽了北京大学的学科结构，为促进医学与人文社会科学及理科的结合，改革医学教育奠定了基础。</p><p>近年来，在“211工程”和“985工程”的支持下，北京大学进入了一个新的历史发展阶段，在学科建设、人才培养、师资队伍建设、教学科研等各方面都取得了显著成绩，为将北大建设成为世界一流大学奠定了坚实的基础。今天的北京大学已经成为国家培养高素质、创造性人才的摇篮、科学研究的前沿和知识创新的重要基地和国际交流的重要桥梁和窗口。</p><p>现任校党委书记朱善璐教授、校长林建华教授。</p>\",\"edudirectly\":1,\"f211\":1,\"f985\":1,\"forumid\":4,\"guanwang\":\"http://www.pku.edu.cn\",\"id\":1,\"images\":\"http://img.myuall.com/univ/imgs/s/i16006140.jpeg\",\"isart\":1,\"isexcellent\":0,\"isprovkey\":0,\"issingle\":0,\"jianjie\":\"北京大学创于1898年，初名京师大学堂，是第一所国立综合性大学，也是当时中国的最高教育行政机关。辛亥革命后，于1912年改为现名。作为新文化运动的中心和“五四”运动的策源地，作为中国最早传播马克思主义和民主科学思想的发祥地，作为中国共产党最早的活动基地，北京大学为民族的振兴和解放、国家的建设和发展、社会的文明和进步做出了不可代替的贡献，在中国走向现代化的进程中起到了重要的先锋作用。爱国、进步、民主、科学的传统精神和勤奋、严谨、求实、创新的学风在这里生生不息、代代相传。1917年，著名教育和民主主\",\"level\":\"本科\",\"library\":\"703\",\"life\":3,\"majors\":\"<h6>&emsp;特色专业：</h6>\n<ul class=\"special_major\">\n <li class=\"clear001\"><strong>国家重点</strong><p> 古典文献学&emsp;历史学&emsp;<span title=\"自办专业\">哲学（科技哲学与逻辑学方向）</span>经济学&emsp;政治学与行政学&emsp;信息管理与信息系统&emsp;图书馆学&emsp;心理学&emsp;理论与应用力学&emsp;工程力学&emsp;核工程与核技术&emsp;口腔医学&emsp;药学&emsp;理论经济学&emsp;物理学&emsp;大气科学&emsp;汉语言&emsp;社会学&emsp;生物科学&emsp;地质学&emsp;数学与应用数学&emsp;哲学&emsp;法学&emsp;环境科学&emsp;计算机科学与技术&emsp;化学&emsp;汉语言文学&emsp;电子信息科学与技术&emsp;新闻学&emsp;英语&emsp;环境工程&emsp;应用心理学&emsp;社会工作&emsp;生物技术&emsp;广告学&emsp;信息与计算科学&emsp;</p></li>\n <li class=\"clear001\"><strong>国家品牌</strong><p> 泰语&emsp;印地语&emsp;金融学&emsp;保险学&emsp;国际政治&emsp;<span title=\"自办专业\">临床医学,100201K（与北京大学第一医院结合）</span><span title=\"自办专业\">临床医学,100201K（与北京大学人民医院结合）</span>城市管理&emsp;智能科学与技术&emsp;考古学&emsp;金融数学&emsp;西班牙语&emsp;阿拉伯语&emsp;微电子科学与工程&emsp;预防医学&emsp;能源与动力工程&emsp;软件工程&emsp;</p></li>\n <li class=\"clear001\"><strong>省部重点</strong><p> 世界史&emsp;地理信息科学&emsp;地球物理学&emsp;地理科学&emsp;</p></li>\n</ul>\n<h6>&emsp;专业信息：</h6>\n<ul class=\"faculty_major\">\n <li class=\"clear001\"><strong>人文学部-中国语言文学系</strong><p> 古典文献学&emsp;应用语言学&emsp;汉语言&emsp;汉语言文学&emsp;</p></li>\n <li class=\"clear001\"><strong>人文学部-历史学系</strong><p> 历史学&emsp;世界史&emsp;</p></li>\n <li class=\"clear001\"><strong>人文学部-哲学与宗教学系 </strong><p> <span title=\"自办专业\">哲学（科技哲学与逻辑学方向）</span>哲学&emsp;宗教学&emsp;</p></li>\n <li class=\"clear001\"><strong>人文学部-考古文博学院</strong><p> 文物保护技术&emsp;考古学&emsp;文物与博物馆学&emsp;</p></li>\n <li class=\"clear001\"><strong>人文学部-外国语学院</strong><p> 蒙古语&emsp;泰语&emsp;印地语&emsp;乌尔都语&emsp;波斯语&emsp;菲律宾语&emsp;梵语巴利语&emsp;希伯来语&emsp;缅甸语&emsp;西班牙语&emsp;阿拉伯语&emsp;印度尼西亚语&emsp;越南语&emsp;英语&emsp;德语&emsp;法语&emsp;俄语&emsp;朝鲜语&emsp;日语&emsp;</p></li>\n <li class=\"clear001\"><strong>人文学部-艺术学院</strong><p> 艺术史论&emsp;广播电视编导&emsp;</p></li>\n <li class=\"clear001\"><strong>社会科学学部-光华管理学院</strong><p> 金融学&emsp;财务管理&emsp;人力资源管理&emsp;市场营销&emsp;会计学&emsp;工商管理&emsp;</p></li>\n <li class=\"clear001\"><strong>社会科学学部-经济学院</strong><p> 经济学&emsp;保险学&emsp;资源与环境经济学&emsp;理论经济学&emsp;财政学&emsp;国际经济与贸易&emsp;</p></li>\n <li class=\"clear001\"><strong>社会科学学部-新闻与传播学院</strong><p> 新闻学&emsp;编辑出版学&emsp;广播电视学&emsp;广告学&emsp;</p></li>\n <li class=\"clear001\"><strong>社会科学学部-法学院</strong><p> 法学&emsp;</p></li>\n <li class=\"clear001\"><strong>社会科学学部-国际关系学院</strong><p> 国际政治&emsp;科学社会主义&emsp;外交学&emsp;</p></li>\n <li class=\"clear001\"><strong>社会科学学部-政府管理学院</strong><p> 政治学与行政学&emsp;城市管理&emsp;行政管理&emsp;</p></li>\n <li class=\"clear001\"><strong>社会科学学部-马克思主义学院</strong><p> 思想政治教育&emsp;</p></li>\n <li class=\"clear001\"><strong>社会科学学部-社会学系</strong><p> 社会学&emsp;社会工作&emsp;</p></li>\n <li class=\"clear001\"><strong>社会科学学部-信息管理系</strong><p> 信息管理与信息系统&emsp;图书馆学&emsp;</p></li>\n <li class=\"clear001\"><strong>理学部-生命科学学院</strong><p> 生物科学&emsp;生物技术&emsp;</p></li>\n <li class=\"clear001\"><strong>理学部-化学与分子工程学院 </strong><p> 化学&emsp;</p></li>\n <li class=\"clear001\"><strong>理学部-地球与空间科学学院</strong><p> 地质学&emsp;空间科学和技术&emsp;地理信息科学&emsp;地球物理学&emsp;地球化学&emsp;地理科学&emsp;</p></li>\n <li class=\"clear001\"><strong>理学部-环境学院</strong><p> 环境科学&emsp;自然地理与资源环境&emsp;环境工程&emsp;生态学&emsp;城乡规划&emsp;</p></li>\n <li class=\"clear001\"><strong>理学部-心理学系</strong><p> 心理学&emsp;应用心理学&emsp;</p></li>\n <li class=\"clear001\"><strong>信息与工程学部-工学院</strong><p> 理论与应用力学&emsp;工程力学&emsp;<span title=\"自办专业\">工程结构分析</span>能源与动力工程&emsp;</p></li>\n <li class=\"clear001\"><strong>信息与工程学部-信息科学技术学院 </strong><p> 智能科学与技术&emsp;计算机科学与技术&emsp;微电子科学与工程&emsp;电子信息科学与技术&emsp;信息与计算科学&emsp;</p></li>\n <li class=\"clear001\"><strong>医学部-药学院</strong><p> 药学&emsp;药物化学&emsp;化学生物学&emsp;</p></li>\n <li class=\"clear001\"><strong>医学部-公共卫生学院</strong><p> 预防医学&emsp;</p></li>\n <li class=\"clear001\"><strong>电气与电子工程学院</strong><p> 智能电网信息工程&emsp;</p></li>\n <li class=\"clear001\"><strong>理学部-物理学院</strong><p> 核工程与核技术&emsp;物理学&emsp;大气科学&emsp;天文学&emsp;</p></li>\n <li class=\"clear001\"><strong>医学部-基础医学部</strong><p> <span title=\"自办专业\">临床医学,100201K（与北京大学第一医院结合）</span><span title=\"自办专业\">临床医学,100201K（与北京大学人民医院结合）</span></p></li>\n <li class=\"clear001\"><strong>附属医院-口腔医学院</strong><p> 口腔医学&emsp;</p></li>\n <li class=\"clear001\"><strong>信息与工程学部-软件与微电子学院</strong><p> 软件工程&emsp;</p></li>\n <li class=\"clear001\"><strong>理学部-数学科学学院</strong><p> 数学与应用数学&emsp;统计学&emsp;</p></li>\n <li class=\"clear001\"><strong>元培学院</strong><p> 政治学、经济学与哲学&emsp;</p></li>\n <li class=\"clear001\"><strong>其他院系</strong><p> 数字出版&emsp;古生物学&emsp;外国语言与外国历史&emsp;通信工程&emsp;波兰语&emsp;金融数学&emsp;</p></li>\n</ul>\",\"membership\":\"教育部\",\"name\":\"北京大学\",\"nameen\":\"PEKING UNIVERSITY(PKU)\",\"oldname\":\"北京大学\",\"personnum\":\"2万~3万人\",\"position\":\"北京，海淀\",\"province\":\"北京\",\"ranking\":4,\"rankingcollegetype\":4,\"recruit\":\"<p>招生办公室咨询电话：010-62751407</p>\n<p>招生门户网站：<a href=\"http://www.gotopku.cn/\" target=\"_blank\" title=\"点击访问该校招生官网\" rel=\"nofollow\">http://www.gotopku.cn/</a></p>\",\"recruitemail\":\"bdzsb@pku.edu.cn\",\"recruitphone\":\"010-62751407\",\"recruiturl\":\"http://www.pku.edu.cn\",\"schoolcode\":\"112000100\",\"schoolid\":31,\"schoolname\":\"北京大学\",\"schoolnature\":\"公办\",\"schoolproperty\":\"综合类\",\"schooltype\":\"普通本科\",\"shoufei\":\"北京大学校本部学费收费标准：理科试验班类、文科试验班类、电子信息类、生物科学专业为5300元人民币/学年，其他专业5000元人民币/学年;住宿费：750-1200元人民币/学年。\",\"sourceurl\":\"http://www.sdaxue.com/college/1.html\",\"sourceurl1\":\"http://gkcx.eol.cn/schoolhtm/schoolTemple/school31.htm\",\"study\":4,\"summary\":\"北京大学创办于1898年，初名京师大学堂，是中国第一所国立综合性大学，也是当时中国最高教育行政机关。辛亥革命后，于1912年改为现名。 作为新文化运动的中心和“五四”运动的策源地，作..\",\"tuition\":\"5000-5300元/年（普通本科专业）\",\"tuitiondetail\":\"<p>当前学费：5000-5300元/年（普通本科专业）</p>\n<p>学费详情：暂无</p>\",\"univurl\":\"http://www.pku.edu.cn/\",\"work\":3}";
//		String json = "{\"id\":30,\"name\":\"微信啦\",\"position\": 2,\"url\":\"http://weixin.la\"}";
//		List<String> ids = new ArrayList<String>();
//		List<String> idxNis = new ArrayList<String>();
//		ids.add("3");
//		idxNis.add(json);
		Index index = new Index("life");
//		index.delIndex("3", type);
//		System.out.println(index.createIndex(30+"", json, type));
	}
	
	/**
	 * 批量删除索引
	 * @param ids
	 * @param type
	 * @return	删除成功返回true，反之返回false，包括只删除一部分也返回false。
	 */
	public boolean delIndexes(List<String> ids, String type) {
		boolean rs = true;
		int i = 0;
		for(String id : ids) {
			System.out.print("," + i);
			DeleteResponse dr = esClient.getClient().prepareDelete(esClient.getIndex(), type, id).setRouting("id").execute().actionGet(); 
//			if(rs) rs = dr.getResult();
			i++;
		}
		return rs;
	}
	
	/**
	 * 单个删除索引
	 * @param id
	 * @param type
	 * @return 删除成功返回true，反之返回false
	 */
	public boolean delIndex(String id, String type) {
		DeleteResponse dResponse = esClient.getClient().prepareDelete(esClient.getIndex(), type, id).setRouting("id").execute()
                .actionGet();
		return true;//dResponse.isFound();
	}
	
//	// 清除所有索引
//    public boolean deleteIndex() {
//        IndicesExistsResponse indicesExistsResponse = esClient.getClient().admin().indices()
//                .exists(new IndicesExistsRequest(new String[] {esClient.getIndex()}))
//                .actionGet();
//        DeleteIndexResponse  dir = null;
//        if (indicesExistsResponse.isExists()) {
//        	dir = esClient.getClient().admin().indices().delete(new DeleteIndexRequest(esClient.getIndex()))
//                    .actionGet();
//        }
//    	return dir.isContextEmpty();
//    }
    
//
//	private Settings getSettings() {
//		Settings settings = Settings.settingsBuilder()
//		// 设置集群名称
//		.put("cluster.name", "myuall")
//		.build();
//		return settings;
//	}
	
	/**
	 * 插入数据到ES
	 * @param id	插入的文档ID
	 * @param json	json数据
	 * @param index	
	 * @param type
	 * @return	插入则返回true，暂时未验证更新返回值
	 */
	public boolean createIndex(String id, String json, String type) {
		IndexRequestBuilder irb = esClient.getClient().prepareIndex(esClient.getIndex(), type);
		String routing = EsClient.getRouting(type);
		if(null != routing) irb.setRouting(routing);
		irb.setId(id);
		irb.setSource(json);
//		irb.field("analyzer","ik");
		IndexResponse ir = irb.execute().actionGet();
		return ir.forcedRefresh();//.isCreated();
	}
	
	/**
	 * 批量插入数据到ES
	 * @param ids	插入的ID集合
	 * @param jsons	json数据集合
	 * @param index
	 * @param type
	 * @return
	 */
	public boolean createIndexBatch(List<String> ids, List<String> jsons, String type) {
		boolean rs = false;
		if(null == jsons || jsons.isEmpty()) return rs;
		
		Client client = esClient.getClient();
		BulkRequestBuilder bulkRequest = client.prepareBulk();
		String routing = EsClient.getRouting(type);
		for(int i =0; i< ids.size(); i++) {
			IndexRequestBuilder irb = client.prepareIndex(esClient.getIndex(), type);
			if(null != routing) irb.setRouting(routing);
			irb.setId(ids.get(i));
			bulkRequest.add(irb.setSource(jsons.get(i)));
		}
		BulkResponse br = bulkRequest.execute().actionGet();
		System.out.println("====="+br.buildFailureMessage());
		rs = br.hasFailures();
		return rs;
	}
}
